L11-14 - Integration Testing

MM-PATHS

- Decide When to stop
	- test case priority
		- Level 1 (All)
			- critical test cases
			- sytem runs and is safe?
		- Level 2 (Certain)
			- general test cases
			- verify day-to-day functionality
		- Level 3 (Certain)
			- detailed test cases
			- test less important requirements
	- target reliability level
		- number of failures per time
		- target reliability optained/maintained in two or more "builds"
	- time and cost
		- time
			- available x staff / average amount to prepare test case
		- cost
			- available budget/ average preparation cost per test case
		- min number of the two


DECOMPOSITION BASED

- functional decomposition tree
	- problem broken down into independent tasks
	- runs:
		- sequentially
		- synchronous call-reply
		- simultaneously

- Stub --> simulate behavior of module
	- returns valid response
		- nothing useful
		- does the same thing
		- return random values
		- handle specific cases

- Driver --> supplies input/output data structure to test unit
	- provides environment
	- simulates input

- Top-Down
	- need stub for non complete parts
	- breadth-first traversal
	1. main (logic) w/ stubs
	2. gradually replace stubs w/ code
	- Test Cases
		- once for each replaced stub
		- once w/ all replaced stubs	
	- Advantages
		- catches errors early, saves cost
		- enables testing to start early
	- Disadvantages
		- stub takes time to design/write
	- Stubs Needed = nodes - 1

- Bottom-up
	- need driver for 1-level up tree
	1. leaves w/ driver
	2. grudually replaces driver with code
	3. working units grouped together
	- Test Cases
		- one for each replaced driver
		- one w/ all code
	- Advantages
		- every component tested before integration
		- simplified debugging... reliable components
	- Disdvantages
		- delayed error detection
		- drivers complex to write
	- Stubs Needed = nodes - leaves

- Sandwich
	- combination of top-down, bottom-up
	- Advantages
		- top & bottom Tests can be done in parallel
	- Disadvantages
		- no thorough testing in individual subsystems before integration

- Big Bang
	- all components assembles + tested at once

- Integration Session = nodes - leaves + edges
- individually correct units = correct behavior
- failure?! --> suspect = last integrated unit
- progress easy to track


CALL-GRAPH BASED

	Pair-Wise
	- used actual code (instead of stubs/drivers)
	- session restricted to pair of units
	- results for each edges
	- Advantages
		- no stub/drivers
	- Disadvantages
		- no much session reduction

- Neighborhood
	- set of one-edge-apart nodes
	# session = nodes - sink nodes
	- Advantages
		- reduction of # of sessions
		- no stubs/drivers
	- Disadvantages
		- fault isolation difficulties of sandwich



